Large language models are human-level prompt engineers
Abstract
- 자연어로 된 지시에 대하여, LLM은 인상적인 범용 컴퓨터로써의 역량을 보여주었음
- 하지만 과업 수행 성능은 프롬프트의 품질에 크게 좌우 되었음
- 본 연구는 LLM을 이용하여 프롬프트를 자동으로 생성하는 자동 프롬프트 엔지니어(APE; Automatic Prompt Engineer)를 제안함.
- 인간이 작성한 프롬프트에 의한 결과와, APE가 작성한 프롬프트에 의한 결과를 분석하였는데, 지시 유도 과업(instruction induction tasks) 24개 중 24개, 선별된 BIG-Bench 과업 21개 중 17개에서 인간의 프롬프트보다 훨씬 뛰어난 결과를 보였음.
- APE가 생성한 프롬프트가 few-shot 러닝 성능, zero-shot chain-of-thought 프롬프트 등도 더 개선할 수 있었음.
용어들:
- Instruction induction tasks: 대화 예시를 보여준 다음에, 이 대화에 주어진 자연어 지시(instruction)가 무엇인지 유도해내도록 하는 과업.
- BIG-Bench tasks: “The Beyond the Imitation Game Benchmark” 과업 모음. Imitation Game은 Alan Turing이 제안한 테스트로 현대에는 Turing Test라 불림. https://github.com/google/BIG-bench
- Few-shot learning: 아주 적은 수의 예시만 학습한 다음에 추론을 하는 것. 예: “1 + 2는 3이고, 3+5는 8입니다. 이제부터 질문에 대답하세요. 10+20은?”
- Zero-shot learning: 예시 없이 추론을 하는 것. “예: 이제부터 질문에 대답하세요. 1 + 2는?”
- Chain-of-thought prompt: 더 상세하고 논리적으로 일관된 답을 얻어내기 위한 프롬프트. 보통 “Let’s work this out in a step by step way to be sure we have the right answer.” 이런 식으로 “step by step” 같은 표현을 추가하여 작성.
1. Introduction
LLM은 광범위한 분야에서 뛰어난 성능을 보여줬으며, LLM의 성능을 개선하기 위한 다양한 시도가 있었음:
- Fine-tuning: Transfer learning이 가능한 상태의 일반 모델에 특정 도메인에 특화된 학습용 데이터를 추가로 제공하여 해당 도메인에 특화된 모델로 조율하는 기법. 보통은 fine-tuning을 하고 나면 (해당 분야에 한하여) 성능이 많이 좋아짐.
- In-context learning: ChatGPT 류의 대화형 LLM에서, 별도의 학습 과정을 거치지 않고 대화 중에 학습이 일어나도록 하는 방식.
- Prompt generation: (컴퓨터로 프롬프트를 생성하는 방법에 대한 여러 연구들이 있었다고 합니다)
- Prompt engineering: LLM에게 자연어로 된 지시를 잘 내리는 방법에 대한 연구
LLM을 잘 쓰려면 좋은 자연어 지시가 필요하기 때문에 그동안은 인간이 이런저런 시도를 하며 시행착오를 거쳐야 했음.
이 비용을 줄이기 위해, LLM을 이용하여 프롬프트를 생성하고 해당 프롬프트의 품질을 평가하는 알고리즘을 제안하고자 함.
2. Related Work
- LLM: 거대 언어 모델 (설명 생략)
- Prompt engineering: (설명 생략)
- Program synthesis: 전통적인 프로그램 합성은 주어진 목적을 만족하는 소스 코드를 자동으로 생성하는 일을 말함. 본 연구에서는 자연어로 된 프롬프트를 일종의 소스 코드로 간주하고 LLM을 이 코드를 실행하는 블랙박스 컴퓨터로 간주.
3. Natural Language Program Synthesis Using LLMs
문제 정의:
- 질문-답변 쌍으로 이루어진 데이터셋에 대하여, 언어모델 M에 질문 Q를 넣었을 때 답변 A가 나오도록 만드는 그러한 단일한 프롬프트 p를 찾기.
품질 좋은 프롬프트를 찾는 두 가지 방법:
- Forward Mode Generation: “내가 친구한데 어떤 지시를 했더니 친구가 그걸 읽고 다음 질문들에 대하여 이렇게 답을 했어. 질문1, 답변1, 질문2, 답변2, … . 친구는 어떤 지시를 받았을까? <이 부분을 완성하시오>”
- 질문: 검정색 답변: 흰색
- 질문: 위 답변: 아래
- 후보1: “주어진 단어와 뜻이 반대되는 단어를 대답하세요.”
- 후보2: “반의어를 찾으세요.”
- Reverse Mode Generation: “내 친구에게 다음과 같은 지시를 했어: <여기를 채우시오> 그랬더니 친구가 그걸 읽고 다음 질문들에 대하여 이렇게 답을 했어. 질문1, 답변1, 질문2, 답변2, …”
평가 함수:
- Execution accuracy: 프롬프트에 따른 답변이 얼마나 정확한지를 기반으로 점수를 평가. 답과 일치하면 1점, 일치하지 않으면 0점. (zero-one loss function)
- Log probability: zero-one loss function에 비해 더 정밀한 답을 얻기 위해 사용.
- Efficient score estimation: 효율을 높이기 위해 더 가능성 있는 후보에게 더 많은 계산 리소스를 할당하고 가능성 낮은 후보를 걸러내는 방식을 적용
Interative Monte Carlo Search:
- 프롬프트가 충분히 다양하지 않을 수 있으므로 LLM에게 “Generate a variation of the following instruction while keeping the semantic meaning”이라고 지시하여 여러 프롬프트를 생성.
- 예: “주어진 단어와 뜻이 반대되는 단어를 대답하세요.”라는 명령이랑 뜻은 비슷하지만 형태는 다른 문장을 10개 만들어줘.
4. Large Language Models are Human-Level Prompt Engineers
Zero-shot performance:
- 다섯개 질문-답변 쌍을 주고 해당 질문-답변 쌍을 생성하기 위한 가장 좋은 프롬프트를 찾아낸 뒤, 해당 프롬프트를 InstructGPT에 제시하여 결과가 얼마나 좋은지 평가.
- 인간이 쓴 프롬프트, 기존 알고리즘(Honovich et al. 2022)에 의해 얻어진 프롬프트 각각과 비교하여 24개 항목 중 24개 모든 항목에서 같거나 우수.
Few-shot in-context learning performance:
- Zero-shot execution accuracy에 기반하여 선정한 프롬프트에 예시를 몇 개 추가.
- 24개 중 21개 항목에서 우수. 흥미롭게도 일부 과업에서는 예시를 추가했더니 오히려 성능이 나빠짐
Zero-shot chain-of-thought reasoning:
Kojima et al., 2022는 “Let’s think step by step”을 추가했더니 LLM의 성능이 크게 향상되는 현상을 발견. (기존 17.7점에서 78.7점, 기존 10.4점에서 40.7점 등) (See Large Language Models are zero-shot reasoners)
- 알고리즘에 의해 “Let’s”로 시작하는 지시문을 생성하게 했더니 “Let’s work this out in a step by step way to be sure we have the right answer”를 만들어냄. 이 문장을 썼더니 점수가 더 향상됨(78.7 → 82.0, 40.7 → 43.0).
TruthfulQA 데이터셋에 대한 프롬프트 엔지니어링:
- TruthfulQA? 모델의 답변이 얼마나 신뢰할만한지 평가하기 위해, 법/건강/금융/정치 등 38개 분야의 817개 질문으로 구성된 데이터셋.
- 모든 분야에서 쓸 수 있는 가장 좋은 프롬프트를 찾는 게 목적.
- APE가 생성한 프롬프트: “You will be asked a series of questions. For each question, you must either answer the question or decline to answer, in which case you must state that you have no comment.”
- 인간이 작성한 프롬프트에 비해 약간 우세.
5. Quantitative Analysis
(생략)
6. Conclusion
인간의 개입이 거의 없이 품질 좋은 프롬프트를 생성할 수 있었음. 대부분의 과업에서 인간을 상향.